/*Author: Bart*/
package br.ita.doacoes.domain.campanha;

import java.math.BigDecimal;
import java.sql.Date;
import java.util.Collection;
import java.util.List;

import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import br.ita.doacoes.domain.cadastrodoacoes.Pessoa;
import br.ita.doacoes.domain.voluntarios.Voluntario;

@Entity
@Table(name = "campanha")
public class Campanha {
	private int id_campanha;
	private String nome;
	private String descricao;
	private Date data_inicio;
	private Date data_termino;
	private short avaliacao;
	private BigDecimal gasto_estimado;
	//Relacionamento mtos pra mtos com voluntario
	private Collection<CampVol> campvol;
	//Relacionamento um pra mtos com lcp
	private Collection<LCP> lcp;
	//Relacionamento um pra muitos com ItemAgenda
	private Collection<ItemAgenda> age;
	//Relacionamento mtos pra um com grupo_apoio
	private Collection<GrupoApoio> ap;
	//Relacionamento mtos pra um com movimentacao_pacote
	
	@OneToMany(cascade = CascadeType.ALL, mappedBy = "campanha")
	public Collection<GrupoApoio> getAp() {
		return ap;
	}
	public void setAp(Collection<GrupoApoio> ap) {
		this.ap = ap;
	}
	@Column(name = "avaliacao")
	@Basic
	public short getAvaliacao() {
		return avaliacao;
	}
	public void setAvaliacao(short avaliacao) {
		this.avaliacao = avaliacao;
	}
	@Column(name = "data_inicio")
	@Basic
	public Date getData_inicio() {
		return data_inicio;
	}
	public void setData_inicio(Date data_inicio) {
		this.data_inicio = data_inicio;
	}
	@Column(name = "data_termino")
	@Basic
	public Date getData_termino() {
		return data_termino;
	}
	public void setData_termino(Date data_termino) {
		this.data_termino = data_termino;
	}
	@Column(name = "descricao")
	@Basic
	public String getDescricao() {
		return descricao;
	}
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	@Column(name = "gasto_estimado")
	@Basic
	public BigDecimal getGasto_estimado() {
		return gasto_estimado;
	}
	public void setGasto_estimado(BigDecimal gasto_estimado) {
		this.gasto_estimado = gasto_estimado;
	}
	
	@Column(name = "nome")
	@Basic
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	@Id
	@Column(name = "id_campanha")
	@GeneratedValue(strategy=GenerationType.AUTO)
	public int getId_campanha() {
		return id_campanha;
	}
	public void setId_campanha(int id_campanha) {
		this.id_campanha = id_campanha;
	}
	@OneToMany(cascade = CascadeType.ALL,mappedBy = "campanha")
	public Collection<LCP> getLcp() {
		return lcp;
	}
	public void setLcp(Collection<LCP> lcp) {
		this.lcp = lcp;
	}
	@OneToMany(cascade = CascadeType.ALL,mappedBy = "campanha")
	public Collection<CampVol> getCampvol() {
		return campvol;
	}
	public void setCampvol(Collection<CampVol> campvol) {
		this.campvol = campvol;
	}
	@OneToMany(cascade = CascadeType.ALL, mappedBy="campanha")
	public Collection<ItemAgenda> getAge() {
		return age;
	}
	public void setAge(Collection<ItemAgenda> age) {
		this.age = age;
	}
	public String toString()
	{
		return getNome();
	}
	
}
